$black:black;
$red: red;
$green: green;
$blue: blue;
$orange: orange;
$purple: purple;
$fontSzie:.3rem;

$themes-color: (default: (fontColor: $black,
        bgColor: $black,
        borderColor:1px solid $black,
        fontSize:$fontSzie),
    red: (fontColor: $red,
        bgColor: $red,
        borderColor:1px solid $red,
        fontSize:$fontSzie),
    green: (fontColor: $green,
        bgColor: $green,
        borderColor:1px solid $green,
        fontSize:$fontSzie),
    blue: (fontColor: $blue,
        bgColor: $blue,
        borderColor:1px solid $blue,
        fontSize:$fontSzie),
    orange: (fontColor: $orange,
        bgColor: $orange,
        borderColor:1px solid $orange,
        fontSize:$fontSzie),
    purple: (fontColor: $purple,
        bgColor: $purple,
        borderColor:1px solid $purple,
        fontSize:$fontSzie),
);

$theme-map: ();
// .theme-red{}   ... 

@mixin zhuti() {
    @each $theme-name, $map in $themes-color {
        #{".theme-"+$theme-name} & {
            @each $key,$value in $map {
                $theme-map: map-merge($theme-map, ($key: $value)) !global;
            }
            @content;
        }
    }
}
// key 
@function themed($key) {
    @return map-get($theme-map, $key);
}
.box{
    @include zhuti() {
        color: themed("fontColor");
    }
}

/* .theme-red .box{}
.box .theme-red {} */

